package com.xuxueli.applyModules.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 清单表头
 */
@ApiModel(value = "返回信息")
@Setter @Getter
public class DcBillHeadDto implements Serializable {
	private static final long serialVersionUID = 1L;
	@ApiModelProperty("SID")
	private String sid;
	@ApiModelProperty("账册编号")
	private String emsNo;
	@ApiModelProperty("清单流水号{Z8开头+16位流水号}")
	private String billListNo;
	@ApiModelProperty("报关申报企业编码")
	private String agentCode;
	@ApiModelProperty("报关申报企业社会信用代码")
	private String agentCreditCode;
	@ApiModelProperty("报关申报企业名称")
	private String agentName;
	@ApiModelProperty("提运单号")
	private String billNo;
	@ApiModelProperty("变更次数")
	private BigDecimal changeTimes;
	@ApiModelProperty("合同协议号")
	private String contrNo;
	@ApiModelProperty("征免性质")
	private String cutMode;
	@ApiModelProperty("报关标志{1-报关，2-非报关}")
	private String dclcusMark;
	@ApiModelProperty("报关类型{1.关联报关2.对应报关}")
	private String dclcusType;
	@ApiModelProperty("申报单位编码")
	private String declareCode;
	@ApiModelProperty("申报单位社会信用代码")
	private String declareCreditCode;
	@ApiModelProperty("清单申报日期")
	@DateTimeFormat(pattern = "yyyy-MM-dd")
	@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
	private Date declareDate;
	private String declareDateP;
	@ApiModelProperty("申报单位名称")
	private String declareName;
	@ApiModelProperty("申报类型{1:清单审批 2:清单修改 3:清单删除 4:清单同步}")
	private String declareType;
	@ApiModelProperty("启运港")
	private String despPort;
	@ApiModelProperty("经停港/指运港")
	private String destPort;
	@ApiModelProperty("核算代码")
	private String duCode;
	@ApiModelProperty("企业内部编号{校验按26位进行校验，剩余两位用于拆分用}")
	private String emsListNo;
	@ApiModelProperty("报关单申报日期")
	@DateTimeFormat(pattern = "yyyy-MM-dd")
	@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
	private Date entryDeclareDate;
	private String entryDeclareDateP;
	@ApiModelProperty("报关单编号")
	private String entryNo;
	@ApiModelProperty("报关状态{标明对应（关联）报关单放行状态，目前只区分 0：未放行，1：已放行。该字段用于区域或物流账册的清单，该类型清单满足两个条件才能核扣：报关单被放行+货物全部过卡}")
	private String entryStatus;
	@ApiModelProperty("报关单类型{1-进口报关单 2-出口报关单 3-进境备案清单 4-出境备案清单 等}")
	private String entryType;
	@ApiModelProperty("运费备注")
	private String feeRateNote;
	@ApiModelProperty("正式核扣时间")
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	private Date formalVrfdedDate;
	@ApiModelProperty("料件成品标志{I-料件,E-成品}")
	@JsonProperty("gMark")
	private String gMark;
	@ApiModelProperty("毛重(公斤)")
	private BigDecimal grossWt;
	@ApiModelProperty("进出口标记{I-进口,E-出口}")
	@JsonProperty("iEMark")
	private String iEMark;
	@ApiModelProperty("进境关别/出境关别")
	@JsonProperty("iEPort")
	private String iEPort;
	@ApiModelProperty("申报人IC卡号")
	private String icCardNo;
	@ApiModelProperty("入库时间")
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	private Date indbTime;
	@ApiModelProperty("录入企业编码")
	private String inputCode;
	@ApiModelProperty("录入企业社会信用代码")
	private String inputCreditCode;
	@ApiModelProperty("录入单位名称")
	private String inputName;
	@ApiModelProperty("插入时间")
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	private Date insertTime;
	@ApiModelProperty("插入人")
	private String insertUser;
	@ApiModelProperty("保费备注")
	private String insurRateNote;

	@Deprecated
	@ApiModelProperty("价格影响确认-废弃")
	private String jgyx;

	@ApiModelProperty("价格影响确认")
	private String confirmPrice;

	@ApiModelProperty("许可证号")
	private String licenseNo;
	@ApiModelProperty("清单进出卡口状态{1-未出卡口，2-部分过卡、3-已出卡口}")
	private String listIochkptStatus;
	@ApiModelProperty("核注清单编号")
	private String listNo;
	@ApiModelProperty("清单类型{0-普通清单，1-分送集报，3-先入区后报关，4-简单加工，5-保税展示交易，6区内流转，7-异常补录，8-保税电商}")
	private String listType;
	@ApiModelProperty("主管海关")
	private String masterCustoms;
	@ApiModelProperty("归并类型{0：自动归并 1：人工归并}")
	private String mergeType;
	@ApiModelProperty("净重(公斤)")
	private BigDecimal netWt;
	@ApiModelProperty("备注")
	private String note;
	@ApiModelProperty("原始清单流水号")
	private String oriBillListNo;
	@ApiModelProperty("杂费备注")
	private String otherRateNote;
	@ApiModelProperty("境外发货人/境外收货人")
	private String overseasShipperName;
	@ApiModelProperty("件数")
	private BigDecimal packNum;
	@ApiModelProperty("核放单生成标志代码{1：未生成、2：部分生成、3：已生成}")
	private String passportUsedMark;
	@ApiModelProperty("清单预录入统一编号")
	private String preSeqNo;
	@ApiModelProperty("预核扣时间")
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	private Date preVrfdedDate;
	@ApiModelProperty("加工单位编码")
	private String receiveCode;
	@ApiModelProperty("加工单位社会信用代码")
	private String receiveCreditCode;
	@ApiModelProperty("加工单位名称")
	private String receiveName;
	@ApiModelProperty("关联手(账)册编号")
	private String relEmsNo;
	@ApiModelProperty("关联报关单申报单位编码")
	private String relEntryDeclareCode;
	@ApiModelProperty("关联报关单申报单位社会统一信用代码")
	private String relEntryDeclareCreditCode;
	@ApiModelProperty("关联报关单申报单位名称")
	private String relEntryDeclareName;
	@ApiModelProperty("关联报关单编号")
	private String relEntryNo;
	@ApiModelProperty("关联报关单收发货人编码")
	private String relEntryReceiveCode;
	@ApiModelProperty("关联报关单收发货人社会统一信用代码")
	private String relEntryReceiveCreditCode;
	@ApiModelProperty("关联报关单收发货人名称")
	private String relEntryReceiveName;
	@ApiModelProperty("关联报关单消费使用单位编码/关联报关单生产销售单位编码")
	private String relEntryTradeCode;
	@ApiModelProperty("关联报关单消费使用单位社会信用代码/关联报关单生产销售单位社会信用代码")
	private String relEntryTradeCreditCode;
	@ApiModelProperty("关联报关单消费使用单位名称/关联报关单生产销售单位名称")
	private String relEntryTradeName;
	@ApiModelProperty("关联核注清单编号")
	private String relListNo;
	@ApiModelProperty("申请表编号")
	private String rotateApplyNo;
	@ApiModelProperty("流转类型{A：加工贸易深加工结转、B：加工贸易余料结转、C：不作价设备结转、D:区间深加工结转、E、区间料件结转}")
	private String rotateType;
	@ApiModelProperty("清单申报人")
	private String sendUser;
	@ApiModelProperty("报关单统一编号")
	private String seqNo;
	@ApiModelProperty("清单状态{z-暂存、1-已申报、2-退单、3-删单、0-审核通过}")
	private String status;
	@ApiModelProperty("经营单位编码")
	private String tradeCode;
	@ApiModelProperty("启运国(地区)/运抵国(地区）")
	private String tradeCountry;
	@ApiModelProperty("经营单位社会信用代码")
	private String tradeCreditCode;
	@ApiModelProperty("监管方式")
	private String tradeMode;
	@ApiModelProperty("经营单位名称")
	private String tradeName;
	@ApiModelProperty("贸易国（地区）")
	private String tradeNation;
	@ApiModelProperty("运输方式")
	private String trafMode;
	@ApiModelProperty("运输工具名称及航次号")
	private String trafName;
	@ApiModelProperty("成交方式")
	private String transMode;

	@Deprecated
	@ApiModelProperty("特殊关系确认-废弃")
	private String tsgx;

	@ApiModelProperty("特殊关系确认")
	private String confirmSpecial;

	@Deprecated
	@ApiModelProperty("支付特许权使用费确认-废弃")
	private String txq;
	@ApiModelProperty("支付特许权使用费确认")
	private String confirmRoyalties;

	@ApiModelProperty("修改日期/录入日期（数据最后一次修改日期）")
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	private Date updateTime;

	private String updateTimeP;

	@ApiModelProperty("修改人")
	private String updateUser;
	@ApiModelProperty("核扣标志{0-未核扣、1-预核扣、2-已核扣、3-已核销、4-反核扣}")
	private String vrfdedMark;
	@ApiModelProperty("核扣方式代码{D:正扣、F:反扣、N：不扣 NF：不扣但检查余量、E：保税仓扣减}")
	private String vrfdedMode;
	@ApiModelProperty("货物存放点")
	private String warehouse;
	@ApiModelProperty("包装种类 多个,分割")
	private String wrapType;

	@Deprecated
	@ApiModelProperty("自报自缴-废弃")
	private String zbzj;
	@ApiModelProperty("自报自缴")
	private String dutySelf;

	@ApiModelProperty("申报数量汇总")
	private BigDecimal tQty;
	@ApiModelProperty("法定数量汇总")
	private BigDecimal tQty1;
	@ApiModelProperty("法定第二数量汇总")
	private BigDecimal tQty2;
	@ApiModelProperty("申报总价汇总")
	private BigDecimal tDecTotal;
	@ApiModelProperty("净重汇总")
	private BigDecimal tNetWt;
	@ApiModelProperty("毛重汇总")
	private BigDecimal tGrossWt;

	@ApiModelProperty("申报数量汇总")
	private String tQtyString;
	@ApiModelProperty("法定数量汇总")
	private String tQty1String;
	@ApiModelProperty("法定第二数量汇总")
	private String tQty2String;
	@ApiModelProperty("申报总价汇总")
	private String tDecTotalString;
	@ApiModelProperty("净重汇总")
	private String tNetWtString;
	@ApiModelProperty("毛重汇总")
	private String tGrossWtString;
	@ApiModelProperty("打印日期")
	private String printDate;
	private String tempOwner;
	private String tempFlag;
	private String tempRemark;

	/**
	 * 进出口日期
	 */
	@ApiModelProperty("进出口日期")
	@DateTimeFormat(pattern = "yyyy-MM-dd")
	@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
	private Date IEDate;

	/**
	 * 境外发货人;境外收货人代码(商检)
	 */
	@ApiModelProperty("境外发货人;境外收货人代码(商检)")
	private String overseasShipperAeo;

	/**
	 * 经营单位编码(商检)
	 */
	@ApiModelProperty("经营单位编码(商检)")
	private String tradeCodeCiq;

	/**
	 * 报关单申报单位代码(商检)
	 */
	@ApiModelProperty("报关单申报单位代码(商检)")
	private String agentCodeCiq;

	/**
	 * 消费使用单位/生产消费单位
	 */
	@ApiModelProperty("消费使用单位/生产消费单位")
	private String receiveCodeCiq;

	/**
	 * 航次号
	 */
	@ApiModelProperty("航次号")
	private String voyageNo;

	/**
	 * 商品项数
	 */
	@ApiModelProperty("商品项数")
	private BigDecimal itemCnt;
	/**
	 * 申报地海关
	 */
	@ApiModelProperty("申报地海关")
	private String declCustoms;

	@ApiModelProperty("录入日期")
	@DateTimeFormat(pattern = "yyyy-MM-dd")
	@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
	private Date inputDate;
	/**
	 * 录入日期Str
	 */
	private String inputDateP;
	/**
	 * 报关申报企业编码 + 报关申报企业名称
	 */
	private String agentCodeName;

	/**
	 * 归类类别
	 */
	@ApiModelProperty("归类类别")
	private String classifyType;

	/**
	 * 归类原因
	 */
	@ApiModelProperty("归类原因")
	private String classifyReason;

	/**
	 * 清单报文ID
	 */
	@ApiModelProperty("清单报文ID")
	private String messageId;

	/**
	 * 报关单报文ID
	 */
	@ApiModelProperty("报关单报文ID")
	private String entryMessageId;

	/**
	 * 归类时间
	 */
	@ApiModelProperty("归类时间")
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
	private  Date classifyTime;
	/**
	 * 入境口岸\离境口岸
	 */
	@ApiModelProperty("入境口岸/离境口岸")
	private String entryPort;

	private String note1;
	private String note2;
	private String note3;

	private String flag;

	/**
	 * 运费标记
	 */
	@ApiModelProperty("运费标记")
	private  String feeMark;
	/**
	 * 运费／率
	 */
	@ApiModelProperty("运费／率")
	private  BigDecimal feeRate;
	/**
	 * 运费币制
	 */
	@ApiModelProperty("运费币制")
	private  String feeCurr;
	/**
	 * 保险费标记
	 */
	@ApiModelProperty("保险费标记")
	private  String insurMark;
	/**
	 * 保险费／率
	 */
	@ApiModelProperty("保险费／率")
	private  BigDecimal insurRate;
	/**
	 * 保险费币制
	 */
	@ApiModelProperty("保险费币制")
	private  String insurCurr;
	/**
	 * 杂费标志
	 */
	@ApiModelProperty("杂费标志")
	private  String otherMark;
	/**
	 * 杂费／率
	 */
	@ApiModelProperty("杂费／率")
	private  BigDecimal otherRate;
	/**
	 * 杂费币制
	 */
	@ApiModelProperty("杂费币制")
	private  String otherCurr;

	/**
	 * 页码/页数
	 */
	@ApiModelProperty("页码/页数")
	private String pageNum;
}